/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package basedatos;

import java.util.List;
import modulos.agenda.modelo.Contacto;

/**
 *
 * @author vic
 */
public class ContactoBD extends OperacionesBD {

    public static boolean eliminar(Contacto object) throws Exception {
        entidad.getTransaction().begin();
        try {
            Contacto c = entidad.getReference(Contacto.class, object.getIdPersona());
            entidad.remove(c);
            entidad.getTransaction().commit();
            return true;
        } catch (Exception e) {
            if (entidad.getTransaction().isActive()) {
                entidad.getTransaction().rollback(); // Arreglar el Error y reintentar
            }
            throw e;
        }
    }

    public static List listarPorUsuario(modulos.usuario.modelo.Usuario usuario) {
        entidad.getTransaction().begin();
        try {
            lista = entidad.createQuery("Select a from Contacto a where usuario_idPersona = '" + usuario.getIdPersona() + "'").getResultList();
            entidad.getTransaction().commit();
        } catch (Exception e) {
            entidad.getTransaction().rollback();
        }
        return lista;
    }

    public static List listarGeneral() {
        entidad.getTransaction().begin();
        try {
            lista = entidad.createQuery("Select a from Contacto a where usuario_idPersona = NULL").getResultList();
            entidad.getTransaction().commit();
        } catch (Exception e) {
            entidad.getTransaction().rollback();
        }
        return lista;
    }

    public static List listarPrediccionPorUsuario(String colum, String contenido, modulos.usuario.modelo.Usuario usuario) {
        entidad.getTransaction().begin();
        try {
            lista = entidad.createQuery("Select a from Contacto a where usuario_idPersona = " + usuario.getIdPersona() + " AND " + colum + " like '%" + contenido + "%'").getResultList();
            entidad.getTransaction().commit();
        } catch (Exception e) {
            entidad.getTransaction().rollback();
        }
        return lista;
    }
    
    public static List listarPrediccionGeneral(String colum, String contenido) {
        entidad.getTransaction().begin();
        try {
            lista = entidad.createQuery("Select a from Contacto a where usuario_idPersona = NULL AND " + colum + " like '%" + contenido + "%'").getResultList();
            entidad.getTransaction().commit();
        } catch (Exception e) {
            entidad.getTransaction().rollback();
        }
        return lista;
    }
}
